home *** CD-ROM | disk | FTP | other *** search
- XCOMM $XFree86: xc/config/cf/bsdiLib.rules,v 3.3 2003/10/09 22:43:18 herrb Exp $
-
- /*
- * BSDI shared library rules (converted from SVr4/Linux rules)
- */
-
- #ifndef HasSharedLibraries
- #define HasSharedLibraries YES
- #endif
- #ifndef ForceNormalLib
- #define ForceNormalLib YES
- #endif
- #ifndef SharedDataSeparation
- #define SharedDataSeparation NO
- #endif
- #ifndef SharedCodeDef
- #define SharedCodeDef /**/
- #endif
- #ifndef SharedLibraryDef
- #define SharedLibraryDef /**/
- #endif
- #ifndef ShLibIncludeFile
- #define ShLibIncludeFile <bsdiLib.tmpl>
- #endif
- #ifndef SharedLibraryLoadFlags
- #define SharedLibraryLoadFlags -shared
- #endif
- #ifndef PositionIndependentCFlags
- #define PositionIndependentCFlags -fPIC
- #endif
- #ifndef PositionIndependentCplusplusFlags
- #define PositionIndependentCplusplusFlags -fPIC
- #endif
- #ifndef BaseShLibReqs
- #define BaseShLibReqs -lc
- #endif
- #ifndef RanlibInstFlags
- #define RanlibInstFlags -t
- #endif
- #ifndef SharedCCLdCmd
- /* NOT $(CC), which is probably 'shlicc'. */
- #define SharedCCLdCmd cc
- #endif
-
- /*
- * InstallSharedLibrary - generate rules to install the shared library.
- */
- #ifndef InstallSharedLibrary
- #define InstallSharedLibrary(libname,rev,dest) @@\
- install:: Concat(lib,libname.so.rev) @@\
- MakeDir($(DESTDIR)dest) @@\
- $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.so.rev) $(DESTDIR)dest @@\
- $(RM) Concat($(DESTDIR)dest/lib,libname.so) @@\
- $(LN) Concat(lib,libname.so.rev) Concat($(DESTDIR)dest/lib,libname.so)
- #endif /* InstallSharedLibrary */
-
- /*
- * InstallSharedLibraryData - generate rules to install the shared library data
- */
- #ifndef InstallSharedLibraryData
- #define InstallSharedLibraryData(libname,rev,dest)
- #endif /* InstallSharedLibraryData */
-
-
- /*
- * SharedLibraryTarget - generate rules to create a shared library;
- * build it into a different name so that we do not hose people by having
- * the library gone for long periods.
- */
- #ifndef SharedLibraryTarget
- #define SharedLibraryTarget(libname,rev,solist,down,up) @@\
- AllTarget(Concat(lib,libname.so.rev)) @@\
- @@\
- Concat(lib,libname.so.rev): solist @@\
- $(RM) $@~ @@\
- @SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \ @@\
- (cd down; $(CCENVSETUP) SharedCCLdCmd -o up/$@~ $(SHLIBLDFLAGS) \
- -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \
- $(RM) $$SONAME; $(LN) $@ $$SONAME; \
- LinkBuildSonameLibrary($$SONAME) @@\
- $(RM) $@ @@\
- $(MV) $@~ $@ @@\
- $(RM) Concat(lib,libname.so) @@\
- $(LN) $@ Concat(lib,libname.so) @@\
- LinkBuildLibrary($@) @@\
- LinkBuildLibrary(Concat(lib,libname.so)) @@\
- @@\
- clean:: @@\
- @SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\
- set -x; $(RM) $$SONAME @@\
- $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
-
- #endif /* SharedLibraryTarget */
-
- /*
- * SharedDepLibraryTarget - generate rules to create a shared library;
- * build it into a different name so that we do not hose people by having
- * the library gone for long periods.
- */
- #ifndef SharedDepLibraryTarget
- #define SharedDepLibraryTarget(libname,rev,deplist,solist,down,up) @@\
- AllTarget(Concat(lib,libname.so.rev)) @@\
- @@\
- Concat(lib,libname.so.rev): deplist @@\
- $(RM) $@~ @@\
- @SONAME=`echo $@ | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; set -x; \ @@\
- (cd down; $(CCENVSETUP) SharedCCLdCmd -o up/$@~ $(SHLIBLDFLAGS) \
- -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \
- $(RM) $$SONAME; $(LN) $@ $$SONAME; \
- LinkBuildSonameLibrary($$SONAME) @@\
- $(RM) $@ @@\
- $(MV) $@~ $@ @@\
- $(RM) Concat(lib,libname.so) @@\
- $(LN) $@ Concat(lib,libname.so) @@\
- LinkBuildLibrary($@) @@\
- LinkBuildLibrary(Concat(lib,libname.so)) @@\
- @@\
- clean:: @@\
- @SONAME=`echo Concat(lib,libname.so.rev) | sed 's/\(lib[^\.]*\.so\.[0-9]*\)\(\.[0-9]*\)\{1,2\}/\1/'`; \ @@\
- set -x; $(RM) $$SONAME @@\
- $(RM) Concat(lib,libname.so.rev) Concat(lib,libname.so)
-
- #endif /* SharedDepLibraryTarget */
-
- #ifndef SharedDepModuleTarget
- #define SharedDepModuleTarget(name,deps,solist) @@\
- AllTarget(name) @@\
- @@\
- name: deps @@\
- $(RM) $@~ @@\
- $(CCENVSETUP) SharedCCLdCmd -o $@~ $(SHLIBLDFLAGS) \
- solist $(REQUIREDLIBS) BaseShLibReqs @@\
- $(RM) $@ @@\
- $(MV) $@~ $@ @@\
- @@\
- clean:: @@\
- $(RM) name
-
- #endif /* SharedDepModuleTarget */
-
-
- /*
- * SharedLibraryDataTarget - generate rules to create shlib data file;
- */
- #ifndef SharedLibraryDataTarget
- #define SharedLibraryDataTarget(libname,rev,salist)
- #endif /* SharedLibraryTarget */
-
- /*
- * Hacks for BSD/OS static shared libraries.
- * We replace the normal library build and install rules.
- */
-
- SHLIB_MAP=$${SHLIB_MAP-/etc/shlib.map}
-
- #define BsdiStaticLibraryName(libname)Concat(Concat(lib,libname),_s)
- #define BsdiStaticStubLibraryName(libname)BsdiStaticLibraryName(libname).a
-
- #define MakeBsdiStaticSharedLibrary(libname) \
- @SHARED=; \
- eval $$( (echo 'MAP() { [ "X$$1" = "X-l'libname'" ] || return 0;' \
- 'echo "TADDR=$$2;";' \
- 'echo "DADDR=$$3;";' \
- 'echo "SHARED=$$5;";' \
- 'shift 5; echo "ARGS='"'"'"$$@"'"'"';";' \
- 'exit 0; }'; cat $(SHLIB_MAP)) | sh); \
- [ -n "$$SHARED" ] || exit 0; \
- echo building static shared libname library; \
- shlib -m $(SHLIB_MAP) -t $$TADDR -d $$DADDR \
- -n BsdiStaticLibraryName(libname) \
- -s BsdiStaticStubLibraryName(libname) \
- $$( [ -f 'loader.lib'libname'.c' ] && \
- echo -b 'loader.lib'libname'.c') \
- $$( [ -f 'lib'libname'.const' ] && \
- echo -c 'lib'libname'.const') \
- $$( [ -f 'lib'libname'.except' ] && \
- echo -e 'lib'libname'.except') \
- $$( [ -f $$SHARED ] && echo -i $$SHARED) \
- $$ARGS LibraryTargetName(libname)
-
- #define InstallBsdiStaticSharedLibrary(libname) \
- @SHARED=; \
- eval $$( (echo 'MAP() { [ "X$$1" = "X-l'libname'" ] || return 0;' \
- 'echo "SHARED=$$5;";' \
- 'echo "STUB=$$(dirname $$4)/$$(basename $$5).a;";' \
- 'exit 0; }'; cat $(SHLIB_MAP)) | sh); \
- [ -n "$$SHARED" ] || exit 0; \
- echo installing static shared libname library; \
- $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \
- BsdiStaticLibraryName(libname) $(DESTDIR)$$SHARED; \
- $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \
- BsdiStaticStubLibraryName(libname) $(DESTDIR)$$STUB; \
- RanLibrary($(RANLIBINSTFLAGS) $(DESTDIR)$$STUB) @@\
- -@eval $$( (echo 'MAP() { [ "X$$1" = "X-l'libname'" ] || return 0;' \
- 'echo "LDIR=$$(dirname $$4)"; exit 0; }'; \
- cat $(SHLIB_MAP)) | sh); \
- [ -f Concat(loader.lib,libname.c) ] && \
- $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \
- Concat(loader.lib,libname.c) \
- $(DESTDIR)$$LDIR/Concat(loader.lib,libname.c); \
- [ -f Concat(lib,libname.const) ] && \
- $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \
- Concat(lib,libname.const) \
- $(DESTDIR)$$LDIR/Concat(lib,libname.const); \
- [ -f Concat(lib,libname.except) ] && \
- $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \
- Concat(lib,libname.except) \
- $(DESTDIR)$$LDIR/Concat(lib,libname.except); exit 0
-
- #ifndef UnsharedLibraryTarget
- #define UnsharedLibraryTarget(libname,objlist,down,up) @@\
- AllTarget(LibraryTargetName(libname)) @@\
- @@\
- LibraryTargetName(libname): objlist @@\
- RemoveFile($@) @@\
- (cd down; MakeLibrary(up/$@,objlist)) @@\
- RanLibrary($@) @@\
- _LinkBuildLibrary($@) @@\
- MakeBsdiStaticSharedLibrary(libname) @@\
- @@\
- clean:: @@\
- $(RM) BsdiStaticLibraryName(libname) BsdiStaticStubLibraryName(libname)
- #endif /* UnsharedLibraryTarget */
-
- #ifndef UnsharedLibraryTarget3
- #define UnsharedLibraryTarget3(libname,objlist1,objlist2,objlist3,down,up) @@\
- UnsharedLibraryTarget(libname,objlist1 objlist2 objlist3,down,up)
- #endif /* UnsharedLibraryTarget3 */
-
- #ifndef InstallLibrary
- #define InstallLibrary(libname,dest) @@\
- install:: LibraryTargetName(libname) @@\
- MakeDir($(DESTDIR)dest) @@\
- $(INSTALL) $(INSTALLFLAGS) $(INSTLIBFLAGS) \
- LibraryTargetName(libname) $(DESTDIR)dest @@\
- RanLibrary($(RANLIBINSTFLAGS) \
- $(DESTDIR)dest/LibraryTargetName(libname)) @@\
- InstallBsdiStaticSharedLibrary(libname)
- #endif /* InstallLibrary */
-